package com.biz.primus.ms.order.dao.po;


import com.biz.primus.model.cart.enums.ShippingLevel;
import com.biz.primus.model.order.enums.OrderItemType;
import com.biz.primus.ms.base.jpa.po.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.*;

/**
 * 订单明细
 *
 * @author Tiger Feng
 * @date 2017年10月28日
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name = "ord_order_item", indexes = {
        @Index(name = "idx_ord_order_item_product_code", columnList = "productCode")
})
public class OrderItem extends BaseEntity {
    /**
     * 关联订单表
     */
    @ManyToOne
    private Order order;
    @Column(length = 64,nullable = false)
    private String itemCode;

    //---------------------------------
    // 商品基础
    /**
     * 商品名称
     */
    @Column(length = 128)
    private String productName;
    /**
     * 商品编码
     */
    @Column(length = 64)
    private String productCode;
    /**
     * 商品时效
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 32)
    private ShippingLevel shippingLevel;
    /**
     * Logo商品品牌
     */
    @Column(length = 128)
    private String logo;
    /**
     * 商品分类ID
     */
    private Long categoryId;
    /**
     * 商品品牌ID
     */
    private Long brandId;
    /**
     * 重量,克
     */
    private Integer weight = 0;
    /**
     * 商品数量
     */
    private Integer quantity = 0;
    /**
     * 商品箱规中 需要在前端展示瓶箱切换的数量
     */
    private Integer packageNumber;

    //---------------------------------
    // 价格
    /**
     * 最终价
     */
    private Integer finalPrice = 0;
    /**
     * 市场价
     */
    private Integer marketPrice = 0;
    /**
     * 会员价
     */
    private Integer memberPrice;
    /**
     * 电子钱包价
     */
    private Integer eWalletPrice;
    /**
     * 商品特价
     */
    private Integer specialOfferPrice;
    /**
     * 商品最多以特价购买的数量
     */
    private Integer specialOfferQuantityLimit;

    //---------------------------------
    // 促销
    /**
     * 商品项标签,例如加价换购,下单得酒..等的枚举字符串
     */
    @Column(length = 64)
    private String itemTag;
    /**
     * 当前商品促销减免金额，多件商品
     */
    private Integer discountPromotionMoney = 0;

    //---------------------------------
    // 优惠券
    /**
     * 当前商品优惠券减免金额，多件商品
     */
    private Integer discountCouponMoney = 0;

    //---------------------------------
    // 订单明细信息
    /**
     * 订单商品类型(normal:普通商品、present:赠品、promotion:促销商品、seckill:秒杀商品)
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 32)
    private OrderItemType type = OrderItemType.normal;
    /**
     * 系统分配金额时的备注
     */
    @Column(length = 250)
    private String allocationRemarks;
}
